package pe.com.cotelasa.scp.controlador.converter;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import org.springframework.stereotype.Component;

import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioProveedor;
import pe.com.cotelasa.scp.entidad.Proveedor;

@FacesConverter(value = "proveedorConverter")
@Component("proveedorConverter")
public class ProveedorConverter implements Converter {

    @Inject
    private IServicioProveedor servicioProveedor;

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic,
            String idProveedor) {
        if (idProveedor == null || idProveedor.trim().equals("") || idProveedor.trim().equals("null")) {
            return null;
        } else {
            try {
                Proveedor proveedor = servicioProveedor
                        .conseguirProveedorPorId(Integer.parseInt(idProveedor.trim()));
                return proveedor;
            } catch (ServiceException exception) {
                throw new ConverterException(new FacesMessage(
                        FacesMessage.SEVERITY_ERROR, "Conversion Error",
                        "No valido Proveedor"));
            }
        }
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        if (o == null || o.equals("")) {
            return "";
        } else {
            return String.valueOf(((Proveedor) o).getId());
        }
    }
}
